<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 闭包可以是变量持久化 不会销毁变量 避免污染全局变量
        // 常驻内存	增大内存的使用量	使用不当在ie中会造成内存的泄露. 


        // 垃圾回收机制
        /*
            标记清除：当声明一个变量的时候回给该变量添加一个标记， 当变量被使用过后会清除这个标记，然后给变量添加一个待删除标记，当浏览器再次检查时发现待删除的变量进行回收
            引用计数：声明一个变量时他的引用次数是0 然后每引用一次 改数字加1 然后每次减少换一个引用时 该数字减1,当引用次数为0是，会自动回收该变量
        
        */
        function fn() {
            var num = 0
            return function() {
                num++
                return num
            }
        }


        var fun = fn()
        count = fun() 
        // console.log(count) // 1
        // count = fun()
        // console.log(count) // 2
    </script>
</body>
</html>